import logging
import traceback
from datetime import datetime
import os

# 日志配置
LOG_DIR = "../../数据管理/game_logs/errors"
os.makedirs(LOG_DIR, exist_ok=True)
logging.basicConfig(
    filename=f"{LOG_DIR}/error_{datetime.now().strftime('%Y%m%d')}.log",
    level=logging.ERROR,
    format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)

class ErrorHandler:
    """全局错误处理类"""
    
    @staticmethod
    def handle_exception(e: Exception, context: str = "未知上下文"):
        """处理异常并记录日志"""
        error_msg = f"在{context}中发生错误: {str(e)}"
        traceback_str = traceback.format_exc()
        
        # 记录详细日志
        logging.error(f"{error_msg}\n{traceback_str}")
        
        # 对于严重错误，可添加邮件通知等逻辑
        if isinstance(e, (MemoryError, RuntimeError)):
            ErrorHandler._send_alert(f"严重错误: {error_msg}")
        
        return {
            "status": "error",
            "message": error_msg,
            "traceback": traceback_str if os.environ.get("DEBUG") else None
        }
    
    @staticmethod
    def _send_alert(message: str):
        """发送错误警报（可扩展为邮件/钉钉等）"""
        print(f"【警报】{message}")
        # 实际应用中可添加：
        # import smtplib
        # 发送邮件逻辑...

# 全局错误处理器实例
error_handler = ErrorHandler()